package br.com.truta.control;

import javax.servlet.http.HttpServletRequest;

import br.com.truta.bd.DaoException;
import br.com.truta.bd.dao.UsuarioDAO;
import br.com.truta.model.Usuario;
import br.com.truta.util.Constantes;

public class UsuarioControl {
	public static boolean validaLogin(HttpServletRequest req) {

		try {
			if (UsuarioDAO.validaLogin(req.getParameter("userName"), req.getParameter("userPassword"))) {
				Usuario usuario = buscaUsuario(req.getParameter("userName"));
				req.getSession().setAttribute("usuario", usuario);
				return true;
			}
		} catch (DaoException e) {
			e.printStackTrace();
		}

		return false;
	}

	public static boolean validaCadastro(HttpServletRequest req) {
		Usuario user = mapeiaUsuario(req);

		try {
			return UsuarioDAO.insereUsuario(user);
		} catch (DaoException e) {
			e.printStackTrace();
			return false;
		}
	}

	public static boolean validaEmail(String email) {
		try {
			return UsuarioDAO.validaEmail(email);
		} catch (DaoException e) {
			e.printStackTrace();
			return false;
		}
	}

	public static boolean validaUsuario(String usuario) {
		try {
			return UsuarioDAO.validaLogin(usuario);
		} catch (DaoException e) {
			e.printStackTrace();
			return false;
		}
	}

	public static boolean fazLogoff(HttpServletRequest req) {
		req.getSession().setAttribute("usuario", null);
		return true;
	}

	private static Usuario buscaUsuario(String nomeUsuario) {
		try {
			return UsuarioDAO.buscaUsuarioUserName(nomeUsuario);
		} catch (DaoException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * Classe responsavel por mapear os dados do Usuario
	 * da Pagina JSP CadastroUsuario para o objeto Usuario
	 * 
	 * @param req
	 * @return Usuario Mapeado
	 */
	private static Usuario mapeiaUsuario(HttpServletRequest req) {
		Usuario user = new Usuario();

		user.setUsuario(req.getParameter(Constantes.PARAMETRO_USER_USUARIO));
		user.setSenha(req.getParameter(Constantes.PARAMETRO_USER_SENHA));
		user.setNome(req.getParameter(Constantes.PARAMETRO_USER_NOME));
		user.setSobrenome(req.getParameter(Constantes.PARAMETRO_USER_SOBRENOME));
		user.setEmail(req.getParameter(Constantes.PARAMETRO_USER_EMAIL));

		return user;
	}

}
